package com.koi.pojo.system;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * @author ･ᴗ･
 * @description [定时任务模型]
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("sys_job")
public class SysJob implements Serializable {

    /**
     * 任务ID
     */
    @TableId(value = "job_id", type = IdType.ASSIGN_ID)
    private Long jobId;

    /**
     * 任务名称
     */
    @NotBlank(message = "任务名称不能为空")
    @TableField("job_name")
    private String jobName;

    /**
     * 任务类型[1-管理平台 2-小程序 3-App]
     */
    @NotBlank(message = "任务类型不能为空")
    @TableField("job_type")
    private String jobType;

    /**
     * 类路径
     */
    @NotBlank(message = "类路径不能为空")
    @TableField("class_path")
    private String classPath;

    /**
     * 方法名称
     */
    @NotBlank(message = "方法名称不能为空")
    @TableField("method_name")
    private String methodName;

    /**
     * cron执行表达式
     */
    @NotBlank(message = "cron执行表达式不能为空")
    @TableField("cron_expression")
    private String cronExpression;

    /**
     * cron计划策略[1-立即执行 2-执行一次 3-放弃执行]
     */
    @NotBlank(message = "cron计划策略不能为空")
    @TableField("policy_status")
    private String policyStatus;

    /**
     * 任务状态 [0正常 1暂停]
     */
    @NotBlank(message = "任务状态不能为空")
    @TableField("job_status")
    private String jobStatus;

    /**
     * 任务参数
     */
    @TableField("job_params")
    private String jobParams;

    /**
     * 任务备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 创建者
     */
    @TableField("create_by")
    private String createBy;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新者
     */
    @TableField("update_by")
    private String updateBy;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
}
